﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ErickOrlando.Utilidades.Windows
{
    public partial class _PlantillaMntDeGestor : _Plantilla
    {
        public _PlantillaMntDeGestor()
        {
            InitializeComponent();
            SoloLectura = false;
            Nuevo = true;
            ToolGrabar.ItemClick += (s, e) => Grabar();
            ToolCancelar.ItemClick += (s, e) => Cancelar();
            ToolActualizar.ItemClick += (s, e) => Actualizar();
        }

        /// <summary>
        /// Permite establecer si los controles contenidos serán de Solo Lectura
        /// </summary>
        [Description("Permite establecer si los controles contenidos serán de Solo Lectura"), Category("Plantilla")]
        public bool SoloLectura { get; set; }
        /// <summary>
        /// Permite saber si se está creando un registro nuevo o no
        /// por defecto es True
        /// </summary>
        [Description("Permite saber si se está creando un registro nuevo o no, por defecto es True"), Category("Plantilla")]
        public bool Nuevo { get; set; }


        public virtual void Grabar()
        {
            DialogResult = System.Windows.Forms.DialogResult.OK;
            Close();
        }

        public virtual void Cancelar()
        {
            DialogResult = System.Windows.Forms.DialogResult.Cancel;
            Close();
        }


        public virtual void Actualizar()
        {
        }

        public override void Formulario(object sender, System.EventArgs e)
        {
            base.Formulario(sender, e);
            Actualizar();
            ManipulaControles(this.Controls);
            if (SoloLectura)
                ToolGrabar.Enabled = false;
        }

        private void _PlantillaMntDeGestor_DataGridCompleto()
        {
            Cursor = Cursors.Arrow;
        }

        private void _Plantilla_KeyPress(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
                Cancelar();
        }

        /// <summary>
        /// Deshabilita los controles del formulario siempre y cuando
        /// este establecida la propiedad SoloLectura en True
        /// </summary>
        public virtual void ManipulaControles(System.Windows.Forms.Control.ControlCollection Contenedor)
        {
            if (!SoloLectura)
                return;

            foreach (Control ctrl in Contenedor)
            {
                if (ctrl.Controls != null && ctrl.Controls.Count > 0)
                    ManipulaControles(ctrl.Controls);

                if (ctrl.DataBindings.Count > 0)
                    if (ctrl.DataBindings[0].DataSource != null)
                        ctrl.Enabled = false;

            }

        }
    }
}
